package com.example.jvmstudytest.outofmemory.stack;

/**
 * VM Args：-Xss180k
 * <p>-Xss = -XX:ThreadStackSize设置单个线程栈大小
 * <p>用于验证hotspot栈内存是否会拓展，会的话，就应当在拓展时抛出oom
 * <p>也就是如果栈内存会拓展，应该是拓展时抢不到内存，报oom（规范），而hotspot报的是soe，说明方法栈大小就是180k不会拓展（而此时可能是栈深度到顶了，JavaVMStackSOF1验证深度）
 */
public class JavaVMStackSOF {
    private int stackLength = 1;
    public void stackLeak() {
        stackLength++;
        stackLeak();
    }
    public static void main(String[] args) throws Throwable {
        JavaVMStackSOF oom = new JavaVMStackSOF();
        try {
            oom.stackLeak();
        } catch (Throwable e) {
            System.out.println("stack length:" + oom.stackLength);
            throw e;
        }
    }
}